import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase que crea la explosion, a diferenca con la bomba esta es la que mata los enemigos/jugador/
 * plantas. Se crea la animacion de dicha explosion, y esta se crea despues de 3seg de que el jugador 
 * haya creado la bomba
 * 
 * @autor (Irma Delgado
 * @versión noviembre/2014
 */
public class Explosion extends Actor
{
    /**
     * Act - hace lo que Explosion quiere hacer. Este método se llama "cuando quiera" o whenever
     * los botones 'Actuar or 'Ejecutar' son presionados en el entorno.
     */
    private GreenfootImage [] explosion;
    private int delay =0;
    private int sprite=0;
    private SimpleTimer timer = new SimpleTimer();
  
    private GreenfootSound explo;
    private int explosionLength = 25;
    private boolean isExploded = false;
    
    /**
     * Constructor de la clase Explosion, carga las imagenes para la animacion
       **/
    public Explosion()
    {
        explosion = new GreenfootImage[8];
        for(int i=0; i<explosion.length; i++)
        {
            explosion[i] = new GreenfootImage("Explosion"+i+".png");
            explosion[i].scale(32,32);
        }
        timer.mark();
        explo = new GreenfootSound("Explo.mp3");
        //setImage("Bomba.png");
    }
    /**
     * Actua de la clase explosion una vez que este se crea en el mundo se ve la animacion, cuando
     * llega a la ultima imagen se elimina
       **/
    public void act() 
    {
       explo.play();
        this.animacion();
        if(explosionLength > 0){
            if(explosionLength == 25){
               
            }
            if(explosionLength == 15){
             }
            if(explosionLength == 5){
            }
            explosionLength--;
            detectarObjetos();
        }
        else{

            ((MundoBob)getWorld()).getBob().setBomba(0);
            getWorld().removeObject(this);
        }
    }   
    
    /**
     * Se borran las plantas si estas han sido tocadas por una exlplosion, en caso del jugador 
     * le quita todas las vidas
     */
    public void detectarObjetos()
    {
        Actor plantas = getOneObjectAtOffset(0, 0, Plant.class);
        Actor player = getOneIntersectingObject(Bob.class);
        if(plantas != null) 
        {
            getWorld().removeObject(plantas);
                }
        if(player !=null){
            int vidas=((MundoBob)getWorld()).getVidas();
            ((MundoBob)getWorld()).setVidas(-vidas);
        }
    }
    /**
     * Hace el efecto de la animacion cambiando la imgaen cada 4s
       **/
    public void animacion()
    {
       
        if(delay==4)
        {
            delay=0;
            sprite++;
            setImage(explosion[sprite]);
        }
        else
        delay++;
    }
}

//}
